package com.example.demo2022.interceptor;

import com.example.demo2022.common.constant.GlobalConstant;
import com.example.demo2022.util.TokenUtil;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/************************************
 * @PACKAGE : com.example.demo2022.interceptor
 * @Author    :  叫我老伯
 * @Date    : 2022/5/31 16:30
 * @Desc    : 登录拦截器具体逻辑
 ***********************************/
public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("LoginInterceptor preHandle....");
        String uri = request.getRequestURI();
        System.out.println("当前路径："+uri);
        /**
         * HandlerMethod=>Controller中标注@RequestMapping的方法
         *  需要配置静态资源不拦截时，添加这块逻辑  => 前后端分离项目
         *
         */
        // 是我们的conrtoller中的方法
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        String token = request.getHeader(GlobalConstant.HEADER_TOKEN);
        if (!TokenUtil.verify(token)) {
            // 未登录跳转到登录界面
            throw  new RuntimeException("no login!");
        }
        return true;
    }
}
